<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
</head>
<body>
    <script>
        //1 同步代码
        // console.log("aaaaaaaaaa");
        // console.log("bbbbbbbbbb");
        //2 异步代码
        // setTimeout(
        //     function(){
        //         console.log("乘坐校车");
        //     }, 4000);

        //     setTimeout(
        //     function(){
        //         console.log("上课");
        //     }, 2000);
        
        //3 回调重新组织
        // 高级程序员
        // function byBus(fn){
        //     setTimeout(()=>{
        //         fn();
        //     },4000);
        // }

        // function doWork(fn){
        //     setTimeout(()=>{
        //         fn();
        //     },1000);
        // }

        //初级程序员
        // (function(){
        //     byBus(()=>console.log("乘坐校车"));
        //     doWork(()=>console.log("巴拉巴拉上课"));
        // })();
        
        //4 通过转换为 同步代码实现
        // function byBus(fn){
        //     setTimeout(()=>{
        //         fn();
        //     },4000);
        // }

        // function doWork(fn){
        //     setTimeout(()=>{
        //         fn();
        //     },1000);
        // }

        // (function(){
        //     byBus(()=>{
        //         console.log("乘坐地铁");
        //         doWork(()=>{
        //             console.log("腾讯会议上课");
        //         });
        //     });
        // })();

        //5 使用promise  
        //高级程序员
        // function byBus(){
        //     return new Promise((resolve,reject)=>{
        //         setTimeout(()=>{
        //             resolve("乘坐地铁");//
        //         },1000);
        //     });
        // }

        // function doWork(){
        //     return new Promise((resolve,reject)=>{
        //         setTimeout(()=>{
        //             resolve("腾讯会议上课");//
        //         },2000);
        //     });
        // }

        // //初级程序员
        // (function(){
        //     byBus().then((data)=>{
        //         console.log(data);
        //         return doWork();
        //     }).then((data)=>{
        //         console.log(data);
        //     });
        // })();


        //6 async   ，  await   组织代码
        //高级程序员
        function byBus(){
            return new Promise((resolve,reject)=>{
                setTimeout(()=>{
                    resolve("乘坐地铁");//
                },1000);
            });
        }

        function doWork(){
            return new Promise((resolve,reject)=>{
                setTimeout(()=>{
                    resolve("腾讯会议上课");//
                },2000);
            });
        }

        //初级程序员
        (async function(){
            console.log(await byBus());
            console.log(await doWork());
        })();

    </script>
</body>
</html>